package com.csun.cmny.provider.service;

import com.csun.cmny.base.dto.LoginAuthDto;
import com.csun.cmny.core.support.IService;
import com.csun.cmny.provider.dto.OrderDto;
import com.csun.cmny.provider.dto.OrderQueryDto;
import com.csun.cmny.provider.model.domain.OmcOrder;
import com.csun.cmny.provider.vo.OrderDetailVo;
import com.csun.cmny.provider.vo.OrderTaskVo;
import com.csun.cmny.provider.vo.OrderVo;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * @Auther: chisj chisj@foxmal.com
 * @Date: 2019-05-29 14:52
 * @Description: the interface omc order service
 */
public interface OmcOrderService extends IService<OmcOrder> {

    /**
     * 下单
     *
     * @param orderDto      order dto
     * @param loginAuthDto  login auth dto
     *
     * @return  the int.
     */
    Integer orderApply(OrderDto orderDto, LoginAuthDto loginAuthDto);

    /**
     * 取消订单
     *
     * @param id    订单Id
     *
     * @return  the int.
     */
    Integer orderCancelById(Long id, LoginAuthDto loginAuthDto);

    /**
     * 查询订单列表
     *
     * @param orderQueryDto order query dto
     *
     * @return  the page info.
     */
    PageInfo queryOrderListWithPage(OrderQueryDto orderQueryDto);

    /**
     * 查询订单任务列表
     *
     * @param orderQueryDto order query dto
     * @param loginAuthDto  login auth dto
     *
     * @return
     */
    PageInfo showOrderTask(OrderQueryDto orderQueryDto, LoginAuthDto loginAuthDto);

    /**
     * 等待接单任务列表
     *
     * @param loginAuthDto
     * @return
     */
    List<OrderTaskVo> showOrderWaitRecvTask(LoginAuthDto loginAuthDto);

    /**
     * 取消接单
     *
     * @param id
     * @return
     */
    Integer orderWaiveById(Long id, LoginAuthDto loginAuthDto);

    /**
     * 待接单处理
     *
     * @param processInstanceId
     */
    void orderWaitByProcessInstanceId(String processInstanceId);

    /**
     * 接单超时处理
     *
     * @param processInstanceId
     */
    void orderRecvDelayByProcessInstanceId(String processInstanceId);

    /**
     * 签到超时处理
     *
     * @param processInstanceId
     */
    void orderCheckInDelayByProcessInstanceId(String processInstanceId);

    /**
     * 签退超时处理
     *
     * @param processInstanceId
     */
    void orderCheckOutDelayByProcessInstanceId(String processInstanceId);

    /**
     * 确认超时处理
     *
     * @param processInstanceId
     */
    void orderConfirmDelayByProcessInstanceId(String processInstanceId);

    /**
     * 查询待服务任务
     *
     * @param loginAuthDto
     * @return
     */
    List<OrderTaskVo> showOrderWaitServiceTask(LoginAuthDto loginAuthDto);

    /**
     * 签到
     *
     * @param id            id
     * @param loginAuthDto  login auth dto
     * @return
     */
    Integer orderCheckInById(Long id, LoginAuthDto loginAuthDto);

    /**
     * 签退
     *
     * @param id            id
     * @param loginAuthDto  login auth dto
     * @return
     */
    Integer orderCheckOutById(Long id, LoginAuthDto loginAuthDto);

    /**
     * 接单
     *
     * @param id            id
     * @param loginAuthDto  login auth dto
     * @return
     */
    Integer orderRecvById(Long id, LoginAuthDto loginAuthDto);

    /**
     * 确认
     *
     * @param id            id
     * @param loginAuthDto  login auth dto
     * @return
     */
    Integer orderConfirmById(Long id, LoginAuthDto loginAuthDto);

    /**
     * 查询订单详情
     *
     * @param id    id
     *
     * @return the order detail vo
     */
    OrderDetailVo showOrderById(Long id, LoginAuthDto loginAuthDto);

    /**
     * 查询已经完成的任务列表
     *
     * @param loginAuthDto
     * @return
     */
    List<OrderVo> showOrderHisFnsd(LoginAuthDto loginAuthDto);
    //查询服务时长
    Integer selectServiceTime(Long groupId);
}
